home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / lib / c / hash / RCS / Hash_PrintStats.c,v < prev    next >
Text File  |  1988-07-25  |  3KB  |  137 lines

  1. head     1.2;
  2. access   ;
  3. symbols  ;
  4. locks    ; strict;
  5. comment  @ * @;
  6.  
  7.  
  8. 1.2
  9. date     88.07.25.10.53.41;  author ouster;  state Exp;
  10. branches ;
  11. next     1.1;
  12.  
  13. 1.1
  14. date     88.06.20.09.30.26;  author ouster;  state Exp;
  15. branches ;
  16. next     ;
  17.  
  18.  
  19. desc
  20. @@
  21.  
  22.  
  23. 1.2
  24. log
  25. @Lint.
  26. @
  27. text
  28. @/* 
  29.  * Hash_PrintStats.c --
  30.  *
  31.  *    Source code for the Hash_PrintStats library procedure.
  32.  *
  33.  * Copyright 1988 Regents of the University of California
  34.  * Permission to use, copy, modify, and distribute this
  35.  * software and its documentation for any purpose and without
  36.  * fee is hereby granted, provided that the above copyright
  37.  * notice appear in all copies.  The University of California
  38.  * makes no representations about the suitability of this
  39.  * software for any purpose.  It is provided "as is" without
  40.  * express or implied warranty.
  41.  */
  42.  
  43. #ifndef lint
  44. static char rcsid[] = "$Header: Hash_PrintStats.c,v 1.1 88/06/20 09:30:26 ouster Exp $ SPRITE (Berkeley)";
  45. #endif not lint
  46.  
  47. #include <hash.h>
  48. #include <list.h>
  49. #include <stdio.h>
  50.  
  51.  
  52. /*
  53.  *---------------------------------------------------------
  54.  *
  55.  * Hash_PrintStats --
  56.  *
  57.  *    This routine calls a caller-supplied procedure to print
  58.  *    statistics about the current bucket situation.
  59.  *
  60.  * Results:    
  61.  *    None.
  62.  *
  63.  * Side Effects:    
  64.  *    Proc gets called (potentially many times) to output information
  65.  *    about the hash table. It must have the following calling sequence:
  66.  *
  67.  *    void
  68.  *    proc(clientData, string)
  69.  *        ClientData clientData;
  70.  *        char *string;
  71.  *    {
  72.  *    }
  73.  *
  74.  *    In each call, clientData is the same as the clientData argument
  75.  *    to this procedure, and string is a null-terminated string of
  76.  *    characters to output.
  77.  *
  78.  *---------------------------------------------------------
  79.  */
  80.  
  81. void
  82. Hash_PrintStats(tablePtr, proc, clientData)
  83.     Hash_Table *tablePtr;        /* Table for which to print info. */
  84.     void (*proc)();            /* Procedure to call to do actual
  85.                          * I/O. */
  86. {
  87.     int count[10], overflow, i, j;
  88.     char msg[100];
  89.     Hash_Entry     *hashEntryPtr;
  90.     List_Links    *hashList;
  91.  
  92.     for (i=0; i<10; i++) {
  93.     count[i] = 0;
  94.     }
  95.     overflow = 0;
  96.     for (i = 0; i < tablePtr->size; i++) {
  97.     j = 0;
  98.     hashList = &(tablePtr->bucketPtr[i]);
  99.     LIST_FORALL(hashList, (List_Links *) hashEntryPtr) {
  100.         j++;
  101.     }
  102.     if (j < 10) {
  103.         count[j]++;
  104.     } else {
  105.         overflow++;
  106.     }
  107.     }
  108.  
  109.     sprintf(msg, "Entries in table %d number of buckets %d\n", 
  110.         tablePtr->numEntries, tablePtr->size);
  111.     (*proc)(clientData, msg);
  112.     for (i = 0;  i < 10; i++) {
  113.     sprintf(msg, "Number of buckets with %d entries: %d.\n",
  114.         i, count[i]);
  115.     (*proc)(clientData, msg);
  116.     }
  117.     sprintf(msg, "Number of buckets with > 9 entries: %d.\n",
  118.         overflow);
  119.     (*proc)(clientData, msg);
  120. }
  121. @
  122.  
  123.  
  124. 1.1
  125. log
  126. @Initial revision
  127. @
  128. text
  129. @d17 1
  130. a17 1
  131. static char rcsid[] = "$Header: proto.c,v 1.2 88/03/11 08:39:08 ouster Exp $ SPRITE (Berkeley)";
  132. d20 3
  133. a22 2
  134. #include "hash.h"
  135. #include "list.h"
  136. @
  137.